home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 7
/
Apprentice-Release7.iso
/
Environments
/
PowerLisp 2.01
/
PowerLisp_2_0_readme.txt
Wrap
Text File
|
1996-07-01
|
17KB
|
442 lines
PowerLisp 2.0
5/26/96
New Features in PowerLisp 2.0
CLOS Support
The biggest new feature in PowerLisp 2.0 is the addition of
CLOS support. See the section on CLOS for details.
Preferences
A Preferences dialog has been added. It lets you control how
much time is given to background processes while Lisp
programs are running. It also lets you choose between having
output all go to the Worksheet vs. output will go to the window
that last executed a Lisp command.
Registration Screen (Sorry, but a necessary addition).
A registration screen has been added at startup. If you have
registered, you can disable it by entering your name and product
registration code in the Registration dialog. Contact Roger
Corman to receive your code if you have already registered.
Better Structure and Array Handling
In PowerLisp 2.0, structures, arrays and strings are all stored
more efficiently. Arrays and strings are more consistent and
more closely adhere to the Common Lisp standard.
Top level variables
The Common Lisp variables +, ++, *, **, etc. are now properly
bound during top loop execution as specified in the Common
Lisp standard.
Misc. Additional Language Features
A number of other Common Lisp functions which were missing
are now implemented (I am sorry to not be more specific here).
Overall, PowerLisp 2.0 is much closer to the CLTL2 specification
than any previous version of PowerLisp.
More Stable on Power Macs.
A serious bug which prevented PPC compiled code from
working on certain Power Macs (related to the memory setup)
has now been fixed. This generally caused a crash during startup
on affected machines. The fix was released last summer as
PowerLisp 1.2.1d. These changes are now included in PowerLisp
2.0.
PowerLisp 1.2
4/1/95
---------------
This is the public release of PowerLisp 1.2. It contains a significant
number of new features, bug fixes, and enhancements over version 1.1.
I will go over a number of these here, but probably won't cover all
of them.
I greatly appreciate the support of those of you who have chosen
to register PowerLisp, and who have communicated with me regarding
bugs, requested enhancements, etc. Many of the added features are
in direct response to those communications.
PowerMac Native
The single biggest change is that PowerLisp is now a fat binary,
and runs native on a PowerMac as well as a 68k Mac. The speed of
the interpreter on a PowerMac is up to 10 times as fast as when running
emulated.
In addition, a full suite of tools, including PowerPC native code
compiler, assembler and disassembler are included with PowerLisp.
PowerLisp is released with both 68k and PPC binaries of the library
files.
Documentation
Thanks to Digital Press and Guy L. Steele Jr., Common Lisp the Language,
2nd edition is available for electronic distribution. I have packaged
it in a form that can be browsed in PowerLisp, and will be including
it with the PowerLisp package for distribution.
Note that Digital Press owns the copyright to this work. Please read
the readme.txt file in the Documentation folder for information about
Digital Press and this reference book.
Additionally, I have put an ascii version of the PowerLisp documentation
in browsable format from within PowerLisp. A hierarchical Documentation
menu makes it very convenient to get documentation on any Common Lisp
function.
Also, the Common Lisp documentation function can be used to pull
up the documentation from CLTL2 as well.
To Install the Common Lisp the Language documentation files so that
they can be used from PowerLisp:
Unstuff the PowerLisp-CLTL2.sit archive. The expanded folder, Documentation,
should be placed into the PowerLisp 1.2 folder. It will replace the current
Documentation folder.
To test whether the installation was successful:
Start up PowerLisp 1.2. It will take longer to start up, because
the menu structure is being built and the documentation index is being
read. When it finishes, pull down the Documentation menu. It should
be extended with Common Lisp the Language chapter names. If not, then
the documentation is not correctly installed.
If at some point you decide you don't want the expanded documentation,
you can disable the load at startup simply by renaming the file
in the Documentation folder called cltl2-index.lisp to some other name.
If this file is not found at startup, the extra documentation is not
loaded.
Editor
The editor now places temporary files in the Macintosh temporary
items folder, which is where they belong. This should avoid
leaving files around when errors occur or when the program
terminates abnormally.
The PowerLisp Worksheet defaults to Lisp Mode.
PostScript and C++ Mode have been removed, as they were not really
useful.
Editor Known Bugs
Line Wrap mode and Lisp mode are not totally compatible. I avoid
using them at the same time. I haven't gotten around to fixing this
yet.
When in Lisp Mode, dragging and scrolling a selection sometimes
leaves garbage highighting on the screen. This is cosmetic only.
Common Lisp Implementation
A number of new functions have been added. Also, printing
functions are more correctly implemented.
Complex numbers are working better than in 1.1. A number of
library functions will still not handle complex numbers, and will
give an error message when passed one.
Floating point comparisons are fixed now.
The main item which is still lacking, relative to CLTL2, is
CLOS. Here and there you may still stumble on some missing functions,
but hopefully this won't come up often.
Integers are now passed as tagged direct values (if they fit in 31 bits).
This improves speed of integer manipulation quite a bit. I will
probably continue to migrate other types to the tagging scheme.
This reduces memory usage and garbage collection.
Compiler
68k compiled libraries use the extension .fasl, and PowerPC compiled
libraries use the extension .ppcl. They both have the same file
type currently. If you try to load and execute the wrong file, it will
not be detected and your system will crash! Sorry about this, but I didn't
have time to deal with this. For now, your best bet may be to remove
all libraries which are the wrong type from your library folder i.e.
if you have a PowerMac remove all the .fasl, and if not remove all the
.ppcl.
I recommend that you recompile any of your own libraries with
version 1.2.
PowerLisp 1.1
4/4/94
---------------
This is the public release of PowerLisp 1.1. It contains a significant
number of new features, bug fixes, and enhancements over version 1.01.
I will go over a number of these here, but probably won't cover all
of them.
I greatly appreciate the support of those of you who have chosen
to register PowerLisp, and who have communicated with me regarding
bugs, requested enhancements, etc. Many of the added features are
in direct response to those communications.
Thanks to Ken Long for his improved color icons, which I have
included in this released version.
Editor
The editor, PowerEdit, has been enhanced in a number of ways,
and a number of bugs have been fixed.
The editor now uses its own heap, which is limited in size to
200k. A source file of about 80k is likely to fill it up. When
the editor limit is reached, text is written to disk in a temporary
file. As a result, you may edit many, large files without any
effect on the space you have for your Lisp programs. I find the
occasional slowdown from disk activity is preferable to the way
the editor ate up memory in 1.01. Currently a temporary file for
each open file is created, when the editor needs memory. These
files should be deleted when the program exits.
The editor has been cleaned up internally, which seems to have
eliminated some spurious crashes and data loss. I still am not
100% confident in it, so keep good backups of your source files.
Line Wrap mode works pretty well now. You can easily turn it on,
but you can't make it the default yet. For large files it can
get pretty sluggish. I usually turn it on when I need to view a long
line, and leave it off the rest of the time.
Lisp mode has been improved. As several of you noted, it seems logical
that when a Lisp expression is outlined, pressing Enter should
execute the entire expression, rather than just the current line.
I have implemented this. To make it obvious, the whole expression
gets highlighted for a fraction of a second before executing it.
You may now create bold and italic text in the editor. The commands
are located in the bottom of the Edit menu. Lisp mode no longer
automatically italicizes comments. Bold and italicized text gets
saved and re-loaded correctly.
Another problem several people had was getting buried in open
parentheses. When you are entering expressions, and have not closed
enough levels of parentheses, the system seems frozen. To make it
clearer, the editor now shows the number of open parentheses
in the message bar. I think this helps.
Editor Known Bugs
Line Wrap mode and Lisp mode are not totally compatible. I avoid
using them at the same time.
PowerLisp Environment
A major addition is the Memory window, which can be displayed via
the Memory command in the new Misc menu. It brings up a window
which gives you animated displays of the PowerLisp heaps, stacks
and editor heap usage. It is useful for monitoring memory usage while
you are running, and noticing how much time is spent in garbage
collection. When you see the Nodes and Heap bars shrinking you
know garbage is being recycled.
Common Lisp Implementation
PowerLisp 1.1 is much closer to CLTL2 compatibility than was
1.01. A larg number of functions and macros have been added, and
several which were incorrectly implemented have been fixed. Several
more libraries have been added, as many of the new, corrected
implementations are in Common Lisp and replace built-in C++
functions.
Complex numbers and arbitrarily large integers are now supported
in PowerLisp.
The main item which is still lacking, relative to CLTL2, is
CLOS. Here and there you may still stumble on some missing functions,
but hopefully this won't come up often.
Scope and Extent
The important fix here is support for special declarations
has been added to both the interpreter and compiler. Local variables
which are declared special should now be handled correctly. In
1.01, only variables declared via defvar or defparameter were
considered special (plus some built-in variables like *package*).
Type Specifiers
This area has been improved a lot, with most type expressions
supported in most places. I hope to be able to remove the qualifiers
so let me know if you notice any problems.
Program Structure
In 1.01 the defun and defmacro macros did not behave correctly
in non top-level contexts. This has been corrected.
Predicates
Most of the missing predicates have been added.
Control Structure
It was pointed out to me that the do macro in 1.01 was incorrect.
In particular, it did not update the set of local variables
'in parallel' as it was supposed to do. This has been fixed in 1.1.
Also, implementations of psetq and all of the multiple value handling
macros are included.
A number of mapping functions which were missing in 1.01 have
been added.
Compiler
The compiler now correctly compiles flet special forms, structures,
and special declarations. labels forms compile, but the generated
code is the same as for flet.
labels works correctly when interpreted. Some bugs in the interpreter
relating to these forms and function closures were identified and
fixed.
The compiler now behaves in accordance with CLTL2 concerning
evaluation of compiled forms. Forms are not evaluated in general,
although eval-when can be used to force evaluation at compile time.
Compiled libraries now use the extension (by default) .fasl which
is commonly used by other Lisp systems. Of course these files are not
compatible with other Lisp systems. Compiled libraries are significantly
smaller than 1.01 libraries. This is accomplished mostly by eliminating
redundancy in the symbol tables. This makes loading faster.
Libraries are about 30% smaller, and should still be compatible
with 1.01 libraries. That is, 1.01 libraries should still load into
1.1, but 1.1 libraries will not be usable by 1.01.
I recommend that you recompile any of your own libraries with
version 1.1. This will allow you to benefit from the smaller
libraries, faster load time and corrected compiler behavior.
The 'missing function' warning messages which so often were emitted
by the compiler are now eliminated. My hope is to add a better,
more useful warning facility to replace this. In the mean time
it was more of a source of confusion and annoyance than a help.
At any rate, if a function is missing at run time, you will get
an error message (the system won't crash).
Declarations
As mentioned before, special declarations are now handled
correctly by the compiler and interpreter. Most other declarations
are currently ignored by both the compiler and interpreter.
The locally special form is not yet supported.
Packages
Some support was added here for shadowing symbols. The defpackage
macro was added. The handling of shadowing symbols still may not
be exactly correct.
Numbers
Many number functions have been added, including sin, cos, tan, asin,
acos, atan, sinh, cosh, tanh, exp, expt, log, float, isqrt. Large
integers and complex numbers are now supported.
A few functions are still missing, but all the missing ones will
explicitly generate "not implemented" messages rather than the
normal "no function definition".
Integers between 0 and 500 now are cached i.e. new ones never
need to be created. (eq 100 100) is true, but (eq 501 501) is nil.
Interpreter
The interpreter has been sped up by reducing the number of external
memory accesses during the interpretation process.
Characters
All characters are kept in a table, so never need to be created
(as are integers between 0 and 500). This makes some character
handling more efficient. Some character-related functions were
added.
Sequences
A number of missing sequence functions are now implemented.
Strings
A number of string functions which were missing in 1.01
are now implemented.
Structures
The defstruct macro has been rewritten in Common Lisp, and is
included in the library 'structures.lisp'. The structure
printing facility should now work correctly. Code which uses
structures now compiles correctly.
Streams
The functions with-output-to-string, read-from-string are
now implemented. The standard stream *terminal-io* has been
added.
Input/Output
Much work has been done with the output functions. Many have
been reimplemented. All the parameters to write are now supported.
Circular lists can be read and written, print-level can be set,
etc.
Pretty printing is still not supported.
The format function works better and more options are supported.
I won't enumerate them here, but if you are really curious you
could read the source code, which is included in format.lisp in
the library folder.
Some output functions, in particular print, worked incorrectly
in 1.01. These have been fixed, but the fix may cause your code
to output differently. Sorry. :-)
Errors
The warn function has been implemented.
Backquotes
Guy Steele's backquote handling code, with optimizations (from CLTL2)
is now used to handle backquote forms. This correctly handles
nested backquote forms, and generates optimally efficient forms.
Documentation
Updated this README file.
I have included a Common Ground version of the documentation
which has a built-in viewer. You can use this version to
browse and print the documentation if you don't have a copy
of Microsoft Word.
The PowerLisp user guide has been updated to include the 1.1
modifications.
Non-standard Extensions
A graphics library has been added. To use it, execute the expression:
(require :graphics)
This will cause the library to be loaded and you may use it to
create graphic images.
The following functions get loaded into the COMMON-LISP package:
open-canvas
use-canvas
moveto
lineto
setcolor
pensize
fillrect
fillpoly
clear-canvas
These functions contain (brief) usage documentation.
PowerLisp 1.01
Updates since version 1.0:
Fixed problem which would cause PowerLisp to crash when
exiting the program in certain cases.
Files selected from the Finder come up on top of the Worksheet
rather than underneath it.
Fixed (setf third) function definition in cl.lisp (common lisp
standard library).
Removed MacWrite version of the documentation. I do not
have MacWrite to test it, and it reportedly has a problem.